package ifpb.pod.remote;

import ifpb.pod.model.ContaUsuario;
import ifpb.pod.model.Contato;
import ifpb.pod.model.Noticia;
import ifpb.pod.model.Usuario;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Diogenes
 */
public interface ServidorRemote extends Remote {

    public Boolean cadastrarUsuario(Usuario usuario) throws RemoteException;

    public Boolean atualizarUsuario(Usuario usuario) throws RemoteException;

    public Boolean removerUsuario(Usuario usuario) throws RemoteException;

    public Boolean autenticarUsuario(ContaUsuario conta) throws RemoteException;

    public void desautenticar(ContaUsuario conta) throws RemoteException;

    public List<Contato> getContatosOnline(Usuario usuario) throws RemoteException;

    public Usuario addAmigoContato(Usuario usuario, String contato) throws RemoteException;

    public Usuario buscarUsuario(ContaUsuario conta) throws RemoteException;

    public ClienteRemote solicitarConversaCliente(Contato remetente, Contato destinatario) throws RemoteException;

    public void conversar(Contato remetente, Contato destinatario) throws RemoteException;

    public void conversarGrupo(Contato remetente, Contato convidado, List<Contato> contatosDaConversa, Boolean mediador) throws RemoteException;

    public void enviarNoticia(Noticia noticia, List<Contato> destinatarios) throws RemoteException;

    public ClienteRemote solicitaConversaGrupo(Contato remetente, Contato convidado, List<Contato> contatosDaConversa) throws RemoteException;

    public List<Noticia> getNoticiasUsuario(Usuario u) throws RemoteException;
}
